/**
 * 依赖注入模块统一导出
 */
export { DIContainer, container } from './Container';
export type { ServiceOptions, ServiceRegistration } from './Container';
export * from './types';
export * from './decorators';

/**
 * 常用服务令牌
 */
export const SERVICE_TOKENS = {
    // 基础服务
    BAG_SERVICE: 'BagService',
    RPG_SERVICE: 'RPGService',
    TASK_SERVICE: 'TaskService',
    MAIL_SERVICE: 'MailService',
    EQUIP_SERVICE: 'EquipService',
    
    // 控制器
    BAG_CONTROLLER: 'BagController',
    RPG_CONTROLLER: 'RPGController',
    TASK_CONTROLLER: 'TaskController',
    MAIL_CONTROLLER: 'MailController',
    
    // 组件
    BAG_COMPONENT: 'BagComponent',
    RPG_COMPONENT: 'RPGComponent',
    TASK_COMPONENT: 'TaskComponent',
    
    // 仓储
    BAG_REPOSITORY: 'BagRepository',
    RPG_REPOSITORY: 'RPGRepository',
    TASK_REPOSITORY: 'TaskRepository',
    
    // 现代化管理器
    MODERN_PROP_SERVICE: 'ModernPropService',
    MODERN_EQUIP_SERVICE: 'ModernEquipService', 
    MODERN_MARKET_SERVICE: 'ModernMarketService',
    
    // 工具类
    LOGGER: 'Logger',
    CONFIG_MANAGER: 'ConfigManager',
    EVENT_BUS: 'EventBus'
} as const;

/**
 * 快速注册常用服务的工具函数
 */
export class ServiceRegistry {
    /**
     * 注册基础服务
     */
    static registerCoreServices(container: any): void {
        // 这里将在后续任务中实现具体的服务注册
        console.log('Core services registration will be implemented in subsequent tasks');
    }
    
    /**
     * 注册控制器
     */
    static registerControllers(container: any): void {
        // 这里将在后续任务中实现具体的控制器注册
        console.log('Controllers registration will be implemented in subsequent tasks');
    }
    
    /**
     * 注册组件
     */
    static registerComponents(container: any): void {
        // 这里将在后续任务中实现具体的组件注册
        console.log('Components registration will be implemented in subsequent tasks');
    }
    
    /**
     * 一键注册所有服务
     */
    static registerAll(container: any): void {
        this.registerCoreServices(container);
        this.registerControllers(container);
        this.registerComponents(container);
    }
}
